#ifndef __Image_ImageRGBA8_h__
#define __Image_ImageRGBA8_h__

#include "Image/Image.h"

struct FIBITMAP;

namespace Orca {

	//--------------------------------------------------------------------------
	class ImageRGBA8 : public Image {

	public:
		static const Str TYPE_NAME;

		ImageRGBA8(uint32 w, uint32 h);
		virtual ~ImageRGBA8();

		static ImageRGBA8* create(FIBITMAP *dib);

		virtual vec4 getPixelAt(uint32 x, uint32 y);
		virtual void setPixelAt(uint32 x, uint32 y, const vec4 &rgba);

		virtual void* getDataPtr();
		virtual uint32 getPixelSizeInBytes();

		virtual bool saveToFile(const Str &filename);

		virtual Texture2d* create2DTexture(bool autoGenMipmap);

	private:
		uint8 *mPixels;
	};
}

#endif // __Image_ImageRGBA8_h__